﻿using Library.Common.Model;
using Synthesize.BaseSet.Domain.Aggregation.Dtos.Authority.Menu;
using Synthesize.BaseSet.ServiceInterface.Dtos.Authority.Menu;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Synthesize.BaseSet.ServiceInterface.Query.Authority
{

    /// <summary>
    /// 菜单查询接口
    /// </summary>
    public interface IMenuQueryService
    {

        /// <summary>
        /// 获取用户可操作菜单信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<GetUserMenuOutput>> GetMenuByUser(GetUserMenuIntput input);

        /// <summary>
        /// 获取角色对应菜单信息【所有菜单+可操作标识】
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<List<GetMenuTreeByRoleOutput>>> GetMenuTreeByRole(GetMenuTreeByRoleInput input);

        /// <summary>
        /// 获取角色对应可操作权限信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<List<GetRoleMenuPermissionOutDto>>> GetMenuPermissionListByRole(GetMenuPermissionListByRoleInput input);

        /// <summary>
        /// 获取部门树
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<BaseApiResult<List<GetMenuTreeListOutput>>> GetMenuTreeList(GetMenuTreeListInput input);

    }
}
